The present invention relates generally to the parsing of packetized stream data, and specifically to the parsing of section data in MPEG-2 transport stream data. A section is a syntactic structure that is used for mapping each ITU-T Rec. H.222.0|ISO/IEC 13818-1 defined program specific information table into Transport Stream packets.
The international organization for standards (ISO) moving pictures experts group (MPEG group), approved an audio video digital compression standard, based on packetized stream data, known as MPEG-2 in an effort to provide a versatile compression standard capable of being utilized for a wide variety of data. The MPEG-2 standard provides explanations needed to implement an MPEG-2 decoder through the use of syntax and semantics of a coded bit stream. MPEG-2 is an open standard which continues to evolve and be applied to a variety of applications ranging from video conferencing to high definition television. As a generic standard, MPEG-2 is intended to be used for a variety of audio and video coding applications. Part one of the MPEG-2 standard (ISO 13818-1), was designated to improve error resilience and carry multiple programs simultaneously without a common time base between programs.
The packetized stream (PS) specified by the MPEG-2 standard, offers a high degree of robustness for noisy channels, and can be used to carry multiple programs, such as multiple TV services. The packetized stream is based on a 188 byte long packet suited for hardware error correction and processing schemes. The use of a robust protocol, such as the packetized stream, allows for reception over noisy environments such as terrestrial and satellite transmissions. Even in these environments it is possible to obtain fast program access, channel hoping, and synchronization between multiple elementary streams carried within the packetized elementary streams which are subdivided into transport packets.
Prior art FIG. 1 illustrates a Transport Packet Stream defined by the MPEG-2 standard. The packetized stream, based on a 188 byte long packet, is well suited for hardware error correction and processing schemes. Such a configuration can carry multiple programs within the same multiplex, even when the transmission environment is noisy. For example, MPEG-2 data can be transferred successfully over coaxial cable networks and satellite transponders with asynchronous multiplexing of constant or variable bit-rate programs to allow fast program access, channel hoping and synchronization between services.
As illustrated further in FIG. 1, MPEG-2 packetized stream consists of fixed length Transport Stream Packets (TSP or packets) based on 4 bytes of header followed by 184 bytes of TSP payload. TSP payload carries Packetized Elementary Stream (PES) data obtained by chopping up an Elementary Stream (ES), which consists of data of a common type and program. For example, audio for a specific program would form one elementary stream, while video for the same program would form a second elementary stream.
The TSP header consists of a synchronization byte (SyncByte), flags, information indicators for error detection and timing, an adaptation field indicator, and a Packet_ID (PID) field used to identify Elementary Streams carried in the payload. The adaptation field, when present, contains flags, and timing information.
The PID Field is used not only to distinguish separate Elementary Streams, but also separate Program Specific Information (PSI) tables. Prior art FIG. 2 illustrates two types of PSI tablesxe2x80x94a Program Association Table 210 (PAT), and a Program Map Table 220 (PMT). The PAT table lists unique program numbers as identifiers for each program, or elementary stream, in a multiplex, and the PID number associated with each program number. A fixed PID number of 0xc3x970000 is assigned to the PAT table, making it possible for the system to download the PAT table on startup by retrieving PID 0xc3x970000 packets.
Each program identified by the PAT table has a related Program Map Table (PMT) having its own PID identifier. Each PMT table lists the PIDs for all Elementary Streams (components) making a given program associated with the PMT. A specific PMT table may be constructed for each program separately, or may be common for a group of programs. In the first case, there are many PMT tables with just one section, and each PMT table has a different PID value. In the second case one PMT table may have many sections, each relevant to one program.
In order to provide multiple services over the same multiplex, data associated with different multimedia services are transmitted, with packet multiplexing, such that data packets from several Elementary Streams of audio, video, data, and others are interleaved on a packet by packet basis into a single MPEG-2 packetized stream. Synchronization between Elementary Streams forming a common program is achieved using presentation time stamps and program clock references which can be transmitted as part of the adaptation field specified in the header.
Prior art FIG. 3 illustrates the fields associated with a PES stream. Each PES stream contains a header portion and a data portion. In addition, an optional header portion may exist. The header portion includes a Packet Start Prefix, a stream ID, and a packet length indicator.
Packetized stream information can be provided either through a direct broadcast, or through a service provider broadcast. Direct broadcast generally refers to signals which are received directly by an end user. Examples of direct broadcasts include satellite broadcasts received by satellite dishes and provided to a decoder at the end user""s location, which receives and decodes the packetized stream data. Another type of direct broadcast is the traditional composite television/radio broadcast. In their most elementary forms, these broadcasts are not digital broadcasts. However, the transmission of digital broadcast in MPEG-2 format is being explored and occurring as an alternative. In this manner, the user would have a tuner capable of receiving the direct terrestrial link information containing the television or radio signals. Once demodulated, the packetized stream information could be provided to a desktop unit, or decoder, owned by the end user.
Service provider broadcast would include broadcast to the home provided by cable television providers, telephone company providers, or other independent providers. In this configuration, the service provider first receives the number of signals which can be ultimately provided to the end user. Examples of such received signals include satellite feeds, terrestrial feeds, switched video sources, local video sources such as tapes, or laser disk DVD""s, as well as traditional table feeds. Based upon the end users demands, the received information can be selectively provided to the end user.
One problem associated with the flexibility of the MPEG-2 standard is that once the packetized stream is received, demodulated, and decrypted, the resulting data stream can still have variations which need be known before the data stream can be properly utilized. For example, the MPEG-2 specification does not indicate a specific set of control signals to be provided with the packetized stream, how received data and control signals are qualified, nor the precise format of the actual data transmitted. As a result, implementations of set top boxes require specific service provider information. Specific service provider information results in an incompatibility among packetized streams schemes provided by different service providers or cable operators. As a result, chip sets are designed and dedicated to support specific service provider""s set top boxes.
Prior art FIG. 4 shows the fields associated with section packets. Section packets are used for transporting PSI tables (as shown in prior art FIG. 2) and system information (SI) tables. An eight-bit table ID (TID) field is used to identify the content associated with the section packet. For example, a TID of 0xc3x9700 identifies a program association section packet related to a PAT; while a TID of 0xc3x9701 relates to a conditional access section packet related to a conditional access table. A three-bit section length field provides information regarding the length of the section packet, allowing a host system to know the amount of memory needed to handle a particular section packet. Multiple sections may be used in representing a single table. Each section would carry a portion of the table data. An eight-bit section number field can be provided to indicate a specific portion of the table being represented by the section packet. For example, if 100 section packets are used to represent a PAT, a section number of 0xc3x9707 would indicate the seventh section packet of the set of 100 section packets. As shown in prior art FIG. 4, other fields are included in the section packet to identify the data represented in the section packet. A host system attempting to reproduce a specific PSI or SI table can identify specific section packets needed.
Prior art FIG. 5 illustrates a prior art system for parsing a packetized stream. The transport parser of the prior art would receive individual packets from the framer. Based upon the PID value, the transport parser would store the PSP data to be used by the system or the graphics engine in a local buffer. When the transport parser""s local buffer was filled, the transport parser would cause a bus request to the appropriate controller (system or video) to initialize a transfer of at least some of the buffered data.
However, when the prior art host video or graphics system needed more data from the transport parser prior to the transport parser initializing the transfer, the system would initialize the transfer by generating a request to access data in the transport parser buffer. Since the bus used internally by the transport parser buffer may have other clients, the host system may have to wait to access the bus. The overall performance of the host system is reduced as a result of the system waiting on data.
Traditional methods for extraction include parsing of digital packets on the host CPU. For example, the host CPU parses program specific information and system information section packets included in the packetized stream packets. However, as the data rate increases, those methods become unsuitable in set-top box systems armed with relatively slow microprocessors or microcontrollers. Even high performance operating systems can have difficulty maintaining long time stable data reception during high bit-rate applications. When the host CPU is burdened with handling tasks for other applications, such as opening e-mail or performing file accessing, the system performance degrades further.
As the performance of the host system degrades, the host CPU becomes unable to process transport packets stored in memory buffers in the conventional system. The buffers become full and the conventional system is unable to accept new transport packets for storage. New transport packets must be discarded during high bit-rate transmissions and packets of data are lost. Therefore, a system and method of receiving packetized stream information that allows for more flexibility and improved performance in terms of data handling, data parsing, design implementation, and data stream acquisition would be advantageous.